//
//  ZYTabbar.swift
//  CZ29WeiboZYH
//
//  Created by 沐颜澈 on 16/6/25.
//  Copyright © 2016年 muyanche. All rights reserved.
//

import UIKit

//声明一个协议
protocol ZYTabBarDelegate: NSObjectProtocol {
    //声明协议方法
    func composeButtonClick()

}



class ZYTabbar: UITabBar {
    
    //声明代理
    //使用weak修饰,修饰代理需要使用NSObjectProtocol基本协议,一定要记得起一个名字
    weak var zyDelegate: ZYTabBarDelegate?
    
    
   override init(frame: CGRect) {
        super.init(frame: frame)
    
        setupUI()
        
    }

    //如果一个类重写了initWithFrame方法,就必须实现下面的方法.
    //代表该类是通过纯代码实现的,如果其他人使用该类的时候,要是使用sb XIB的时候会使用该方法
   required init?(coder aDecoder: NSCoder) {
       fatalError("init(coder:) has not been implemented")
   }
    
    //加载子控件的方法
    override func layoutSubviews() {
        //不调用父类方法的话,tabbar下面的条是看不见的
        super.layoutSubviews()
        
        //UITabBarButton的宽度
        let width = SCREENW / 5
        
        //写一个记录的标识
        var index: CGFloat = 0
        
        
        //通过遍历获取类身上的子控件
        for value in self.subviews {
            if value.isKindOfClass(NSClassFromString("UITabBarButton")!) {
                //设置宽度
                value.frame.size.width = width
                //设置x轴
                value.frame.origin.x = index * width
                
                //循环次数,需要改变的时候index 使用var
                index++
                
                //给按钮留个位置
                if index == 2 {
                    index++
                }
            }
        }
        
        //设置按钮的frame 
        composeButton.center.x = self.frame.width * 0.5
        composeButton.center.y = self.frame.height * 0.5
        
    }
    
    //设置视图的方法,添加大控件
    func setupUI() {
        
        addSubview(composeButton)
        
    }
    
    //实现按钮的点击事件,私有方法,按钮的监听方法,需要使用@objc来修饰私有方法,告诉系统要使用oc中基于运行时方法
    //如果私有后需要添加@objc
    //需要在这里弹出一个发布微博的页面
    @objc private func BtnClick() {
        print("按钮点击了")
        //执行代理
        zyDelegate?.composeButtonClick()
        
    }

    
    //创建按钮按钮,私有的按钮
    private lazy var composeButton: UIButton = {
        let button = UIButton()
        
        //给button添加点击事件
        button.addTarget(self, action: "BtnClick", forControlEvents: UIControlEvents.TouchUpInside)
        
        
        //设置button的背景图片
        button.setBackgroundImage(UIImage(named: "tabbar_compose_button_highlighted"), forState: UIControlState.Highlighted)
        button.setBackgroundImage(UIImage(named: "tabbar_compose_button"), forState: UIControlState.Normal)
        
        //设置图片
        button.setImage(UIImage(named: "tabbar_compose_icon_add_highlighted"), forState: UIControlState.Highlighted)
        button.setImage(UIImage(named: "tabbar_compose_icon_add"), forState: UIControlState.Normal)
        
        //设置图片的拉伸模式
        button.sizeToFit()
        
        
        return button
    }()
    
    
}





























